// 这个文件会帮我们打包packages下的模块，最终打包成js文件

// node dev.js [name] -f [打包格式]

import minimist from "minimist"
import {resolve,dirname} from 'path'
import {fileURLToPath} from 'url'
import {createRequire} from 'module'
import esbuild from 'esbuild'
const args=minimist(process.argv.slice(2))
//esm中使用commonjs命令
const __filename=fileURLToPath(import.meta.url)
const __dirname=dirname(__filename)
const require=createRequire(import.meta.url)
const target=args._[0]||"reactivity" //打包项目
const pkg=require( `../packages/${target}/package.json`)
const format=args.f||"iife" // 打包后的模块规范

console.log(target,format,require);

// node中esm模块没有—__dirname
// 入口文件 根据命令进行解析
const entry=resolve(__dirname,`../packages/${target}/src/index.ts`)

esbuild.context({
    entryPoints:[entry], //入口
    outfile:resolve(__dirname,`../packages/${target}/dist/${target}.js`) ,//出口
    bundle:true,//reacitivity --》 shared 会一起打包
    platform:"browser",//打包后给浏览器使用
    sourcemap:true,// 可以调试源码
    format, //esm iife cjs
    globalName:pkg?.buildOtions?.name
}).then((ctx)=>{
    console.log('start dev')
    return  ctx.watch(); //监控文件持续进行打包处理
})